package com.ruoyi.transaction.mapper;

import com.ruoyi.transaction.domain.TransactionPay;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *  数据层
 * 
 * @author ruoyi
 * @date 2019-05-07
 */
public interface TransactionPayMapper 
{
	/**
     * 查询信息
     * 
     * @param id ID
     * @return 信息
     */
	public TransactionPay selectTransactionPayById(Long id);
	
	/**
     * 查询列表
     * 
     * @param transactionPay 信息
     * @return 集合
     */
	public List<TransactionPay> selectTransactionPayList(TransactionPay transactionPay);
	
	/**
     * 新增
     * 
     * @param transactionPay 信息
     * @return 结果
     */
	public int insertTransactionPay(TransactionPay transactionPay);
	
	/**
     * 修改
     * 
     * @param transactionPay 信息
     * @return 结果
     */
	public int updateTransactionPay(TransactionPay transactionPay);
	
	/**
     * 删除
     * 
     * @param id ID
     * @return 结果
     */
	public int deleteTransactionPayById(Long id);
	
	/**
     * 批量删除
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteTransactionPayByIds(String[] ids);


	/**
	 * 根据钱包类型id查询支付交易
	 * @param walletKindId 	钱包类型id
	 * @return				支付交易
	 */
    List<TransactionPay> selectTransactionPayByWalletKindId(@Param("walletKindId") Long walletKindId);


	/**
	 * 查询支付记录所有渠道名称
	 * @return    支付记录集合
	 */
	List<TransactionPay> selectTransactionPayListWithChannelName();


	/**
	 * 根据渠道名称和日期查询预期数据
	 * @param channelName	渠道名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionPay statisticsByChannelNameAndDate(@Param("channelName") String channelName, @Param("yesterday") String yesterday);


	/**
	 * 根据渠道名称和日期、支付状态查询预期数据
	 * @param channelName	渠道名称
	 * @param yesterday		日期
	 * @param status		支付状态
	 * @return				实际数据
	 */
	TransactionPay statisticsByChannelNameAndDateAndStatus(@Param("channelName") String channelName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 查询支付记录所有商户名称
	 * @return    支付记录集合
	 */
	List<TransactionPay> selectTransactionPayListWithMerchantName();


	/**
	 * 根据渠道名称和商户名称、日期查询预期数据
	 * @param channelName	渠道名称
	 * @param merchantName	商户名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionPay selectPayListByChannelNameAndMerchantNameAndDay(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("yesterday") String yesterday);


	/**
	 * 根据渠道名称和商户名称、日期、支付状态 查询预期数据
	 * @param channelName		渠道名称
	 * @param merchantName		商户名称
	 * @param yesterday			日期
	 * @param status			支付状态
	 * @return					实际数据
	 */
	TransactionPay selectPayListByChannelNameAndMerchantNameAndDayAndStatus(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 查询支付记录所有支付方式名称
	 * @return    支付记录集合
	 */
	List<TransactionPay> selectTransactionPayListWithPayKindName();




	/**
	 * 根据渠道名称和支付方式名称、日期查询预期数据
	 * @param channelName	渠道名称
	 * @param payKindName	支付方式名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionPay selectPayListByChannelNameAndPayKindNameAndDay(@Param("channelName") String channelName, @Param("payKindName") String payKindName, @Param("yesterday") String yesterday);




	/**
	 * 根据渠道名称和支付方式名称、日期、支付状态 查询预期数据
	 * @param channelName		渠道名称
	 * @param payKindName		支付方式名称
	 * @param yesterday			日期
	 * @param status			支付状态
	 * @return					实际数据
	 */
	TransactionPay selectPayListByChannelNameAndPayKindNameAndDayAndStatus(@Param("channelName") String channelName, @Param("payKindName") String payKindName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 根据渠道名称和商户名称、支付方式名称、日期、查询预期数据
	 * @param channelName	渠道名称
	 * @param merchantName	商户名称
	 * @param yesterday		日期
	 * @param payKindName	支付方式名称
	 * @return				预期数据
	 */
	TransactionPay selectByChannelNameAndMerchantNameAndPaykindNameAndDay(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("yesterday") String yesterday);


	/**
	 * 根据渠道名称和支付方式名称、商户名称、日期、支付状态 查询预期数据
	 * @param channelName		渠道名称
	 * @param payKindName		支付方式名称
	 * @param merchantName		商户名称
	 * @param yesterday			日期
	 * @param status			支付状态
	 * @return					实际数据
	 */
	TransactionPay selectByChannelNameAndMerchantNameAndPaykindNameAndDayAndStatus(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 根据商户名称和日期查询预期数据
	 * @param merchantName	商户名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionPay statisticsByMerchantNameAndDate(@Param("merchantName") String merchantName, @Param("yesterday") String yesterday);


	/**
	 * 根据商户名称和日期、支付状态查询预期数据
	 * @param merchantName	商户名称
	 * @param yesterday		日期
	 * @param status		支付状态
	 * @return				实际
	 */
	TransactionPay statisticsByMerchantNameAndDateAndStatus(@Param("merchantName") String merchantName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 根据商户名称和日期、支付方式名称、查询预期数据
	 * @param merchantName	商户名称
	 * @param payKindName	支付方式名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionPay statisticsByMerchantNameAndPayKindNameAndDate(@Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("yesterday") String yesterday);



	/**
	 * 根据商户名称和日期、支付方式名称、查询预期数据
	 * @param merchantName	商户名称
	 * @param payKindName	支付方式名称
	 * @param status		支付状态
	 * @param yesterday		日期
	 * @return				实际数据
	 */
	TransactionPay statisticsByMerchantNameAndPayKindNameAndDateAndStatus(@Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("yesterday") String yesterday, @Param("status") int status);



	/**
	 * 根据支付方式名称和日期查询预期数据
	 * @param payKindName	支付方式名称
	 * @param yesterday		日期
	 * @return				预期数据
	 */
	TransactionPay statisticsByPayKindNameAndDate(@Param("payKindName") String payKindName, @Param("yesterday") String yesterday);


	/**
	 * 根据支付方式名称和日期查询预期数据
	 * @param payKindName	支付方式名称
	 * @param yesterday		日期
	 * @param status		支付状态
	 * @return				预期数据
	 */
	TransactionPay statisticsByPayKindNameAndDateAndStatus(@Param("payKindName") String payKindName, @Param("yesterday")String yesterday, @Param("status") int status);


	/**
	 * 统计预期数据
	 * @param channelName		渠道名称
	 * @param merchantName		商户名称
	 * @param payKindName		支付方式名称
	 * @param yesterday			日期
	 * @return					预期数据
	 */
	TransactionPay statisticsByNameAndDate(@Param("channelName") String channelName, @Param("merchantName") String merchantName,  @Param("payKindName") String payKindName, @Param("yesterday") String yesterday);


	/**
	 * 统计实际数据
	 * @param channelName		渠道名称
	 * @param merchantName		商户名称
	 * @param payKindName		支付方式名称
	 * @param yesterday			日期
	 * @param status			支付状态
	 * @return					实际数据
	 */
	TransactionPay statisticsByNameAndDateAndStatus(@Param("channelName") String channelName, @Param("merchantName") String merchantName,  @Param("payKindName") String payKindName, @Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 根据日期统计数据
	 * @param yesterday	日期
	 * @return			预期数据
	 */
    TransactionPay statisticsByDate(@Param("yesterday") String yesterday);


	/**
	 * 根据日期、状态统计数据
	 * @param yesterday	日期
	 * @param status	状态
	 * @return			实际数据
	 */
	TransactionPay statisticsByDateAndStatus(@Param("yesterday") String yesterday, @Param("status") int status);


	/**
	 * 查询支付    按小时
	 * @param
	 * @return
	 */
	TransactionPay statisticsByHours(@Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	支付状态   按小时
	 * @return
	 */
	TransactionPay statisticsByDateAndStatusAndHours(@Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	渠道    按小时
	 * @param channelName
	 * @param
	 * @return
	 */
	TransactionPay statisticsByChannelNameAndHours(@Param("channelName") String channelName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	渠道  支付状态  按小时
	 * @param channelName
	 * @param
	 * @param status
	 * @return
	 */
	TransactionPay statisticsByChannelNameAndDateAndStatusAndHours(@Param("channelName") String channelName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	渠道  商户  按小时
	 * @param channelName
	 * @param merchantName
	 * @param
	 * @return
	 */
	TransactionPay selectPayListByChannelNameAndMerchantNameAndHours(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	渠道  商户 支付状态   按小时
	 * @param channelName
	 * @param merchantName
	 * @param
	 * @param status
	 * @return
	 */
	TransactionPay selectPayListByChannelNameAndMerchantNameAndHoursAndStatus(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	渠道  支付方式    按小时
	 * @param channelName
	 * @param payKindName
	 * @param
	 * @return
	 */
	TransactionPay selectPayListByChannelNameAndPayKindNameAndHours(@Param("channelName") String channelName, @Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	渠道  支付方式  支付状态  按小时
	 * @param channelName
	 * @param payKindName
	 * @param
	 * @param status
	 * @return
	 */
	TransactionPay selectPayListByChannelNameAndPayKindNameAndHoursAndStatus(@Param("channelName") String channelName, @Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	渠道  商户 支付方式    按小时
	 * @param channelName
	 * @param merchantName
	 * @param payKindName
	 * @param
	 * @return
	 */
	TransactionPay selectByChannelNameAndMerchantNameAndPaykindNameAndHours(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	渠道  商户 支付方式  支付状态   按小时
	 * @param channelName
	 * @param merchantName
	 * @param payKindName
	 * @param
	 * @return
	 */
	TransactionPay selectByChannelNameAndMerchantNameAndPaykindNameAndHoursAndStatus(@Param("channelName") String channelName, @Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	 商户     按小时
	 * @param merchantName
	 * @param
	 * @return
	 */
	TransactionPay statisticsByMerchantNameAndHours(@Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	 商户  支付状态   按小时
	 * @param merchantName
	 * @param
	 * @param status
	 * @return
	 */
	TransactionPay statisticsByMerchantNameAndHoursAndStatus(@Param("merchantName") String merchantName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	 商户  支付方式   按小时
	 * @param merchantName
	 * @param payKindName
	 * @param
	 * @return
	 */
	TransactionPay statisticsByMerchantNameAndPayKindNameAndHours(@Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	 商户  支付方式  支付状态  按小时
	 * @param merchantName
	 * @param payKindName
	 * @param status
	 * @return
	 */
	TransactionPay statisticsByMerchantNameAndPayKindNameAndHoursAndStatus(@Param("merchantName") String merchantName, @Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end, @Param("status") int status);


	/**
	 * 查询支付 	  支付方式    按小时
	 * @param payKindName
	 * @return
	 */
	TransactionPay statisticsByPayKindNameAndHours(@Param("payKindName") String payKindName, @Param("start") String start, @Param("end") String end);


	/**
	 * 查询支付 	  支付方式   支付状态   按小时
	 * @param payKindName
	 * @param status
	 * @return
	 */
	TransactionPay statisticsByPayKindNameAndHoursAndStatus(@Param("payKindName") String payKindName,@Param("start") String start, @Param("end") String end, @Param("status") int status);
}